草庐IT

C++ sizeof 包装类

全部标签

c++ - 在 sizeof(++n) 表达式中不调用增量运算符

这个问题在这里已经有了答案:Whydoessizeof(x++)notincrementx?(10个回答)关闭2年前。在C或C++中,递增和递减运算符(++n、--n)在sizeof()运算符。intn=100;intsize_int=sizeof(++n);std::cout我已经编写了这段代码并运行了程序。当然,我认为101会为我展示。但是,n不是101,而是100。这是为什么呢? 最佳答案 在C++中,sizeof中的表达式不被计算,除了C99的VLA如评论中所述,因为这之前也被标记为Csizeof运算符是在编译时计算的。只有

c++ - 在 sizeof(++n) 表达式中不调用增量运算符

这个问题在这里已经有了答案:Whydoessizeof(x++)notincrementx?(10个回答)关闭2年前。在C或C++中,递增和递减运算符(++n、--n)在sizeof()运算符。intn=100;intsize_int=sizeof(++n);std::cout我已经编写了这段代码并运行了程序。当然,我认为101会为我展示。但是,n不是101,而是100。这是为什么呢? 最佳答案 在C++中,sizeof中的表达式不被计算,除了C99的VLA如评论中所述,因为这之前也被标记为Csizeof运算符是在编译时计算的。只有

c++ - "sizeof new int;"是未定义的行为吗?

代码:#includeusingnamespacestd;intmain(){size_ti=sizeofnewint;cout在GCC编译器中,工作正常,没有任何警告或错误,并打印输出8.但是,在clang编译器中,我收到了以下警告:warning:expressionwithsideeffectshasnoeffectinanunevaluatedcontext[-Wunevaluated-expression]size_ti=sizeofnewint;哪一个是真的?sizeofnewint;是未定义的行为吗? 最佳答案 警告没

c++ - "sizeof new int;"是未定义的行为吗?

代码:#includeusingnamespacestd;intmain(){size_ti=sizeofnewint;cout在GCC编译器中,工作正常,没有任何警告或错误,并打印输出8.但是,在clang编译器中,我收到了以下警告:warning:expressionwithsideeffectshasnoeffectinanunevaluatedcontext[-Wunevaluated-expression]size_ti=sizeofnewint;哪一个是真的?sizeofnewint;是未定义的行为吗? 最佳答案 警告没

c++ - 为 C 消费包装 C++ 类 API

我有一组相关的C++类,它们必须从DLL中包装和导出,以便C/FFI库可以轻松使用它。我正在寻找一些“最佳实践”来做到这一点。例如,如何创建和释放对象、如何处理基类、替代方案等……到目前为止,我的一些基本准则是将方法转换为简单的函数,并带有一个额外的void*参数来表示“this”指针,包括任何析构函数。构造函数可以保留其原始参数列表,但必须返回一个表示对象的指针。所有内存都应该通过同一组进程范围的分配和空闲例程来处理,并且在某种意义上应该是可热交换的,无论是通过宏还是其他方式。 最佳答案 Foreach公共(public)方法你需

c++ - 为 C 消费包装 C++ 类 API

我有一组相关的C++类,它们必须从DLL中包装和导出,以便C/FFI库可以轻松使用它。我正在寻找一些“最佳实践”来做到这一点。例如,如何创建和释放对象、如何处理基类、替代方案等……到目前为止,我的一些基本准则是将方法转换为简单的函数,并带有一个额外的void*参数来表示“this”指针,包括任何析构函数。构造函数可以保留其原始参数列表,但必须返回一个表示对象的指针。所有内存都应该通过同一组进程范围的分配和空闲例程来处理,并且在某种意义上应该是可热交换的,无论是通过宏还是其他方式。 最佳答案 Foreach公共(public)方法你需

c++ - sizeof 接受两个参数

在C++IS的C.1.3(2003。它也在C++11IS中)中,该标准指出了ISOC和C++之间的区别;即,对于chararr[100];sizeof(0,arr)在C中返回sizeof(char*),但在C++中返回100。我找不到sizeof采用两个参数的文档。明显的后备是逗号运算符,但我不这么认为:C中的sizeof(arr)is100;sizeof(0,arr)是sizeof(char*)。sizeof(0,arr)和sizeof(arr)在C++中都是100。在这种情况下,我可能错过了IS的全部要点。任何人都可以帮忙吗?这类似于09年讨论的一个问题,但没有人提到IS,而且我认

c++ - sizeof 接受两个参数

在C++IS的C.1.3(2003。它也在C++11IS中)中,该标准指出了ISOC和C++之间的区别;即,对于chararr[100];sizeof(0,arr)在C中返回sizeof(char*),但在C++中返回100。我找不到sizeof采用两个参数的文档。明显的后备是逗号运算符,但我不这么认为:C中的sizeof(arr)is100;sizeof(0,arr)是sizeof(char*)。sizeof(0,arr)和sizeof(arr)在C++中都是100。在这种情况下,我可能错过了IS的全部要点。任何人都可以帮忙吗?这类似于09年讨论的一个问题,但没有人提到IS,而且我认

c++ - 用 C/C++ 包装 Mac OS X 特定代码的宏

在阅读各种C和C++源代码时,我遇到了两个宏__APPLE__和__OSX__。我发现在各种代码中大量使用了__OSX__,尤其是那些源自*BSD系统的代码。但是,有时我发现仅测试__OSX__是不够的,我必须使用__APPLE__宏来完成测试。PortingCommandLineUnixToolstoMacOSXguides指定了__APPLE__和另外的__APPLE_CC__但没有没有提及__OSX__。PortingfromGCC指南说:Use#ifdef__GNUC__towrapanyGCC-specificcode.Use#ifdef__APPLE_CC__towrapa

c++ - 用 C/C++ 包装 Mac OS X 特定代码的宏

在阅读各种C和C++源代码时,我遇到了两个宏__APPLE__和__OSX__。我发现在各种代码中大量使用了__OSX__,尤其是那些源自*BSD系统的代码。但是,有时我发现仅测试__OSX__是不够的,我必须使用__APPLE__宏来完成测试。PortingCommandLineUnixToolstoMacOSXguides指定了__APPLE__和另外的__APPLE_CC__但没有没有提及__OSX__。PortingfromGCC指南说:Use#ifdef__GNUC__towrapanyGCC-specificcode.Use#ifdef__APPLE_CC__towrapa